10、限制不同的用户操作k8s集群
ssl认证
生成一个证书
（1）生成一个私钥
cd /etc/kubernetes/pki/
(umask 077; openssl genrsa -out lucky.key 2048) 
（2）生成一个证书请求
openssl req -new -key lucky.key -out lucky.csr -subj "/CN=lucky"
（3）生成一个证书
openssl x509 -req -in lucky.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out lucky.crt -days 3650
在kubeconfig下新增加一个lucky这个用户
（1）把lucky这个用户添加到kubernetes集群中，可以用来认证apiserver的连接
[root@xianchaomaster1 pki]# kubectl config set-credentials lucky --client-certificate=./lucky.crt --client-key=./lucky.key --embed-certs=true  
（2）在kubeconfig下新增加一个lucky这个账号
kubectl config set-context lucky@kubernetes --cluster=kubernetes --user=lucky
（3）切换账号到lucky，默认没有任何权限
kubectl config use-context lucky@kubernetes
kubectl config use-context kubernetes-admin@kubernetes 这个是集群用户，有任何权限
把user这个用户通过rolebinding绑定到clusterrole上，授予权限,权限只是在lucky这个名称空间有效
（1）把lucky这个用户通过rolebinding绑定到clusterrole上
kubectl create ns lucky-test
kubectl create rolebinding lucky -n lucky-test --clusterrole=cluster-admin --user=lucky
（2）切换到lucky这个用户
kubectl config use-context lucky@kubernetes
（3）测试是否有权限
kubectl get pods -n lucky-test
有权限操作这个名称空间


添加一个test的普通用户
useradd test
cp -ar /root/.kube /tmp/
修改/tmp/.kube/config文件，把kubernetes-admin相关的删除，只留lucky用户
cp -ar /tmp/.kube/ /home/test/
chown -R test.test /home/test/
su - test
kubectl get pods -n lucky

退出test用户，需要在把集群环境切换成管理员权限

kubectl config use-context kubernetes-admin@kubernetes


10.1 授权kubectl用户能查看所有名称空间的pod的权限
ssl认证
生成一个证书
（1）生成一个私钥
cd /etc/kubernetes/pki/
(umask 077; openssl genrsa -out lucky1.key 2048) 
（2）生成一个证书请求
openssl req -new -key lucky1.key -out lucky1.csr -subj "/CN=lucky66"
（3）生成一个证书
openssl x509 -req -in lucky1.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out lucky1.crt -days 3650
在kubeconfig下新增加一个lucky这个用户
（1）把lucky这个用户添加到kubernetes集群中，可以用来认证apiserver的连接
[root@xianchaomaster1 pki]# kubectl config set-credentials lucky66 --client-certificate=./lucky1.crt --client-key=./lucky1.key --embed-certs=true  
（2）在kubeconfig下新增加一个lucky这个账号
kubectl config set-context lucky66@kubernetes --cluster=kubernetes --user=lucky66
(3)创建一个clusterrole
[root@xianchaomaster1 sa]# vim lucky66-clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: lucky66-get-pod
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list", "watch"]

[root@xianchaomaster1]# kubectl apply -f lucky66-clusterrole.yaml
（4）创建一个clusterrolebinding
[root@xianchaomaster1]# kubectl create clusterrolebinding lucky66-get-pods --clusterrole=lucky66-get-pod  --user=lucky66
